// 标准库gob是golang提供的“私有”的编解码方式，它的效率会比json，xml等更高，特别适合在Go语言程序间传递数据
package main

import (
	"bytes"
	"encoding/gob"
	"fmt"
	"io/ioutil"
)

type Fish struct {
	Name string
	Age  int
}

func main() {
	// 编码
	//var fishes=[]Fish{{"金鱼",1},{"鲸鱼",100}}
	//var buf =&bytes.Buffer{}
	////var buf =new(bytes.Buffer)
	//encoder:=gob.NewEncoder(buf)
	//encoder.Encode(fishes)
	//fmt.Println(buf)
	//// 保存到文件中，buf格式转成字节切片
	//ioutil.WriteFile("fish.gob",buf.Bytes(),0666)

	// 解码
	var fishes []Fish
	data, _ := ioutil.ReadFile("./fish.gob")
	buf := bytes.NewReader(data)
	decoder := gob.NewDecoder(buf)
	decoder.Decode(&fishes)
	fmt.Println(fishes)
}
